package algo3.vista;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

import algo3.modelo.IPosicionable;
import fiuba.algo3.titiritero.dibujables.SuperficiePanel;
import fiuba.algo3.titiritero.modelo.ObjetoDibujable;
import fiuba.algo3.titiritero.modelo.SuperficieDeDibujo;


abstract public class ImagenEnTablero implements ObjetoDibujable {
	
	protected IPosicionable posicionable;
	protected BufferedImage imagen;
	
	public ImagenEnTablero(IPosicionable posicionable) throws IOException
	{
		this.posicionable = posicionable;
		FileInputStream inStream = new FileInputStream("resources/" + getNombreImagen());
		this.imagen = ImageIO.read(inStream);
	}
	
	abstract protected String getNombreImagen();
	
	protected BufferedImage getImagen(){
		return this.imagen;
	}

	private int getX(){
		return SistemaCoordenadas.ubicacionDibujableHorizontal(this.posicionable.getPosicion());
	}

	private int getY(){
		return SistemaCoordenadas.ubicacionDibujableVertical(this.posicionable.getPosicion());
	}
	
	@Override
	public void dibujar(SuperficieDeDibujo superficieDeDibujo) {
		Graphics grafico = ((SuperficiePanel) superficieDeDibujo).getBuffer();
		grafico.drawImage(this.getImagen(), this.getX(), this.getY(), null);
	}
	
}
